
// #include "Shm.hpp"
// #include "Fifo.hpp" // 包含管道类
// #include <string>
// #include <cstring>

// int main() {
//     Shm shm(pathname, projid, USER);
//     char *mem = (char *)shm.VirtualAddr();

//     // 管道初始化（写端，Client 用）
//     FileOper writer(PATH, FILENAME);
//     writer.OpenForWrite();

//     // 要发送的多段字符串（每段完整发送）
//     std::string strs[] = {
//         "Hello Server!",
//         "这是一段完整的字符串",
//         "管道实现整段同步",
//         "" // 空字符串作为退出信号
//     };
//     int str_count = sizeof(strs)/sizeof(strs[0]);

//     for (int i = 0; i < str_count; i++) {
//         // 等待 Server 清空内存（确保上一段已读完）
//         while (strlen(mem) != 0) {
//             usleep(50000);
//         }

//         // 写完整段字符串到共享内存
//         strncpy(mem, strs[i].c_str(), shm.Size() - 1);
//         mem[shm.Size() - 1] = '\0'; // 确保字符串结束

//         // 向管道发通知：“我写完一段了，快来读！”
//         writer.Wakeup();
//         sleep(1); // 间隔1秒，方便观察
//     }

//     writer.Close();
//     printf("Client 退出\n");
//     return 0;
// }
#include "Shm.hpp"
#include "Fifo.hpp"

int main()
{
    FileOper writerfile(PATH, FILENAME);
    writerfile.OpenForWrite();

    Shm shm(pathname, projid, USER);
    char *mem = (char *)shm.VirtualAddr();
    // 我们读写共享内存，有没有使用系统调用？？没有！！
    int index = 0;
    for (char c = 'A'; c <= 'Z'; c++, index += 2)
    {
        // 才是向共享内存写入
        sleep(1);
        mem[index] = c;
        mem[index + 1] = c;
        sleep(1);
        mem[index+2] = 0;

        writerfile.Wakeup();
    }

    writerfile.Close();
    return 0;
}